package com.iflytek.uoamp.agent.core.sender.monitorsender.monitorinterface;

import java.util.List;
import java.util.Map;

import com.iflytek.uoamp.agent.core.sender.monitorsender.responseObj.*;

/**
 * @ClassName: Iface
 * @Description: 发送接口
 * @author qinanyuan
 * @date 2017年3月22日 下午9:08:47
 */
public interface Iface {
	/**
	 * 
	 * @Title: addServices
	 * @Description: 监控项上报
	 * @param programs
	 * @return   Status
	 * @date 2017年3月23日 下午3:00:11
	 * @throws
	 */
	public Status addServices(List<Program> programs);

    /**
     * 
     * @Title: initMonitorItem
     * @Description: 从服务端拉取配置文件
     * @param itemType
     * @return   List<BMonitorItem>
     * @date 2017年3月23日 下午3:01:01
     * @throws
     */
    public List<BMonitorItem> initMonitorItem(ItemType itemType);

    public List<BMonitorItem> getMonitorItem(ItemType itemType, List<String> namelist);

    public BMonitorResponse send(BMonitorRequest req);

    public BMonitorResponse sendBatch(List<BMonitorRequest> reqs);

    public Status append(ThriftFlumeEvent event);

    public Status appendBatch(List<ThriftFlumeEvent> events);

    public Status ping(String ip) throws Exception;

    public List<NewVersion> getAllConfig(RequestVersion ip);

    public Map<String,String> isUpdate(ClientVersion version);

    public boolean log(AgentLog logcontent);

    public AutoPluginFile downloadPlugin(String filename);

    public String uploadInformation(String info);

    public Map<String,String> getComponentList();

    public Map<String,String> getPluginFileList(String type);

    public Map<String,String> getAgentVersionInfo();

    public AutoPluginFile downloadAgentPackage();

    public Status proxyPing(String ip);
}
